<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let obj = {
            name: "老王",
            age: 18,
            sex: "男",
            like: ["篮球", {
                name: "蹦极"
            }, "跳", "rap"],
            run: function() {
                console.log("跑了");
            }
        }

        function deepClone(obj) {
            // 你obj是什么 我就 创建个什么 {},[];
            let newObj = null;
            // 判断你这个obj东西 是一个基本数据类型还是复合数据类型
            if (typeof obj === 'object' && obj !== null) {
                // 当你扔进来参数是个数组或者是对象
                // 判断是数组还是不是数组？
                // let isArray = obj instanceof Array;
                newObj = obj instanceof Array ? [] : {};

                for (i in obj) {
                    newObj[i] = deepClone(obj[i]);
                }

                // if (isArray) {
                //     newObj = [];

                //     for (i in obj) {
                //         newObj[i] = deepClone(obj[i]);
                //     }
                // } else {
                //     newObj = {}
                //     for (i in obj) {
                //         newObj[i] = deepClone(obj[i]);
                //     }
                // }

            } else {
                // 基本数据类型
                newObj = obj;
            }

            return newObj;
        }


        let obj2 = deepClone(obj);


        obj2.like[0] = '台球';

        console.log(obj);
        console.log(obj2);
    </script>
</body>

</html>